package com.ruoyi.movie.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 电影管理对象 movie
 * 
 * @author LinBei
 * @date 2025-08-06
 */
public class Movie extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /**  */
    @Excel(name = "")
    private Long movieId;

    /** 电影标题 */
    @Excel(name = "电影标题")
    private String title;

    /** 电影首次上映日期（精确到日，如2023-12-31） */
    private Date releaseDate;

    /** 电影片长 */
    private Long duration;

    /** 电影对白语言 */
    @Excel(name = "电影对白语言")
    private String language;

    /** 制片国家 */
    @Excel(name = "制片国家")
    private String country;

    /** 电影剧情简介 */
    private String overview;

    /** 电影海报存储路径 */
    private String posterUrl;

    /** 电影播放文件 */
    private String fileUrl;

    /** 观众或专业评分的平均值（如9.3，保留2位小数，范围通常为0-10） */
    private BigDecimal ratingAverage;

    /** 观众评价总分 */
    private BigDecimal ratingAll;

    /** 参与评分的总人数（如1000000表示有100万用户评分） */
    private Long ratingCount;

    /** 电影状态 */
    @Excel(name = "电影状态")
    private String status;

    /** 数据库记录创建时间（自动生成，用于追踪数据录入时间） */
    private Date createdAt;

    /** 记录最后一次更新的时间（数据修改时自动更新，用于数据同步和版本追踪） */
    private Date updatedAt;

    /** 轮播标记 */
    @Excel(name = "轮播标记")
    private Long flag;

    /** 电影分类 */
    @Excel(name = "电影分类")
    private String classification;

    /** 小标题 */
    private String smalltitle;

    public void setMovieId(Long movieId) 
    {
        this.movieId = movieId;
    }

    public Long getMovieId() 
    {
        return movieId;
    }

    public void setTitle(String title) 
    {
        this.title = title;
    }

    public String getTitle() 
    {
        return title;
    }

    public void setReleaseDate(Date releaseDate) 
    {
        this.releaseDate = releaseDate;
    }

    public Date getReleaseDate() 
    {
        return releaseDate;
    }

    public void setDuration(Long duration) 
    {
        this.duration = duration;
    }

    public Long getDuration() 
    {
        return duration;
    }

    public void setLanguage(String language) 
    {
        this.language = language;
    }

    public String getLanguage() 
    {
        return language;
    }

    public void setCountry(String country) 
    {
        this.country = country;
    }

    public String getCountry() 
    {
        return country;
    }

    public void setOverview(String overview) 
    {
        this.overview = overview;
    }

    public String getOverview() 
    {
        return overview;
    }

    public void setPosterUrl(String posterUrl) 
    {
        this.posterUrl = posterUrl;
    }

    public String getPosterUrl() 
    {
        return posterUrl;
    }

    public void setFileUrl(String fileUrl) 
    {
        this.fileUrl = fileUrl;
    }

    public String getFileUrl() 
    {
        return fileUrl;
    }

    public void setRatingAverage(BigDecimal ratingAverage) 
    {
        this.ratingAverage = ratingAverage;
    }

    public BigDecimal getRatingAverage() 
    {
        return ratingAverage;
    }

    public void setRatingAll(BigDecimal ratingAll) 
    {
        this.ratingAll = ratingAll;
    }

    public BigDecimal getRatingAll() 
    {
        return ratingAll;
    }

    public void setRatingCount(Long ratingCount) 
    {
        this.ratingCount = ratingCount;
    }

    public Long getRatingCount() 
    {
        return ratingCount;
    }

    public void setStatus(String status) 
    {
        this.status = status;
    }

    public String getStatus() 
    {
        return status;
    }

    public void setCreatedAt(Date createdAt) 
    {
        this.createdAt = createdAt;
    }

    public Date getCreatedAt() 
    {
        return createdAt;
    }

    public void setUpdatedAt(Date updatedAt) 
    {
        this.updatedAt = updatedAt;
    }

    public Date getUpdatedAt() 
    {
        return updatedAt;
    }

    public void setFlag(Long flag) 
    {
        this.flag = flag;
    }

    public Long getFlag() 
    {
        return flag;
    }

    public void setClassification(String classification) 
    {
        this.classification = classification;
    }

    public String getClassification() 
    {
        return classification;
    }

    public void setSmalltitle(String smalltitle) 
    {
        this.smalltitle = smalltitle;
    }

    public String getSmalltitle() 
    {
        return smalltitle;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("movieId", getMovieId())
            .append("title", getTitle())
            .append("releaseDate", getReleaseDate())
            .append("duration", getDuration())
            .append("language", getLanguage())
            .append("country", getCountry())
            .append("overview", getOverview())
            .append("posterUrl", getPosterUrl())
            .append("fileUrl", getFileUrl())
            .append("ratingAverage", getRatingAverage())
            .append("ratingAll", getRatingAll())
            .append("ratingCount", getRatingCount())
            .append("status", getStatus())
            .append("createdAt", getCreatedAt())
            .append("updatedAt", getUpdatedAt())
            .append("flag", getFlag())
            .append("classification", getClassification())
            .append("smalltitle", getSmalltitle())
            .toString();
    }
}
